@meowdown/core 0.15.2 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,7 +28,7 @@ Heading shortcuts toggle the current block to a heading of that level (or back t
28
28
 
29
29
  ## Round-trip fidelity
30
30
 
31
- `checkRoundTrip(markdown)` reports how faithfully markdown survives a parse-then-serialize round trip: `'exact'` (byte-identical modulo the trailing newline), `'normalizing'` (same non-blank lines, only blank-line layout differs), or `'lossy'` (a non-blank line changed, e.g. setext headings or raw HTML blocks). Hosts that keep markdown on disk can gate saves on it, opening lossy files read-only so a save never rewrites content.
31
+ `checkRoundTrip(markdown)` reports how faithfully markdown survives a parse-then-serialize round trip: `'exact'` (byte-identical modulo the trailing newline), `'normalizing'` (same non-blank lines, only blank-line layout differs), or `'lossy'` (a non-blank line changed, e.g. a closing ATX hash sequence or unaligned table columns). Hosts that keep markdown on disk can gate saves on it, opening lossy files read-only so a save never rewrites content.
32
32
 
33
33
  ## Styling
34
34
 
package/dist/index.d.ts CHANGED
@@ -1,9 +1,54 @@
1
- import { Editor, ExtractNodeBuilders, PlainExtension, Priority, withPriority } from "@prosekit/core";
1
+ import { Editor, Extension, ExtractNodeBuilders, PlainExtension, Priority, Union, withPriority } from "@prosekit/core";
2
2
  import { CodeBlockAttrs } from "@prosekit/extensions/code-block";
3
3
  import { ProseMirrorNode } from "@prosekit/pm/model";
4
+ import { ListExtension } from "@prosekit/extensions/list";
4
5
  import { PlaceholderOptions, definePlaceholder } from "@prosekit/extensions/placeholder";
5
6
  import { defineReadonly } from "@prosekit/extensions/readonly";
6
7
 
8
+ //#region src/extensions/frontmatter.d.ts
9
+ /**
10
+ * The raw YAML frontmatter body, stored verbatim (the text between the opening
11
+ * and closing `---` fences, without a trailing newline).
12
+ *
13
+ * - `null` means the document has no frontmatter (the default).
14
+ * - `''` means an empty frontmatter block (`---\n---`).
15
+ * - any other string is the body, which may contain newlines.
16
+ */
17
+ type Frontmatter = string | null;
18
+ //#endregion
19
+ //#region src/extensions/list.d.ts
20
+ /**
21
+ * The marker for a list item.
22
+ *
23
+ * For ordered list items, the marker is `.` or `)`.
24
+ * For bullet and task list items, the marker is `-`, `*`, or `+`.
25
+ *
26
+ * Defaults to null if unknown.
27
+ */
28
+ type ListMarker = '.' | ')' | '-' | '*' | '+' | null;
29
+ /**
30
+ * The character inside a checked task's checkbox.
31
+ *
32
+ * GFM marks a box checked with either `x` or `X`. Defaults to null, which the
33
+ * serializer emits as the canonical lowercase `x`.
34
+ */
35
+ type TaskMarker = 'x' | 'X' | null;
36
+ type ListMarkerExtension = Extension<{
37
+ Nodes: {
38
+ list: {
39
+ marker?: ListMarker;
40
+ };
41
+ };
42
+ }>;
43
+ type ListTaskMarkerExtension = Extension<{
44
+ Nodes: {
45
+ list: {
46
+ taskMarker?: TaskMarker;
47
+ };
48
+ };
49
+ }>;
50
+ type MeowdownListExtension = Union<[ListExtension, ListMarkerExtension, ListTaskMarkerExtension]>;
51
+ //#endregion
7
52
  //#region src/extensions/inline-marks.d.ts
8
53
  interface MdImageViewAttrs {
9
54
  src: string;
@@ -35,7 +80,19 @@ interface MdPackAttrs {
35
80
  }
36
81
  //#endregion
37
82
  //#region src/extensions/extension.d.ts
38
- declare function defineEditorExtensionImpl(): import("@prosekit/core").Union<readonly [import("@prosekit/extensions/paragraph").ParagraphExtension, import("@prosekit/extensions/doc").DocExtension, import("@prosekit/extensions/text").TextExtension, import("@prosekit/extensions/blockquote").BlockquoteExtension, import("@prosekit/extensions/list").ListExtension, import("@prosekit/core").Union<readonly [import("@prosekit/extensions/heading").HeadingSpecExtension, import("@prosekit/core").PlainExtension, import("@prosekit/extensions/heading").HeadingCommandsExtension, import("@prosekit/core").PlainExtension]>, import("@prosekit/core").Union<readonly [import("@prosekit/extensions/table").TableSpecExtension, import("@prosekit/extensions/table").TableRowSpecExtension, import("@prosekit/extensions/table").TableCellSpecExtension, import("@prosekit/extensions/table").TableHeaderCellSpecExtension, import("@prosekit/core").PlainExtension, import("@prosekit/extensions/table").TableCommandsExtension, import("@prosekit/core").PlainExtension]>, import("@prosekit/extensions/code-block").CodeBlockExtension, import("@prosekit/extensions/horizontal-rule").HorizontalRuleExtension, import("@prosekit/core").Union<readonly [import("@prosekit/core").Extension<{
83
+ declare function defineEditorExtensionImpl(): import("@prosekit/core").Union<readonly [import("@prosekit/extensions/paragraph").ParagraphExtension, import("@prosekit/extensions/doc").DocExtension, import("@prosekit/core").Extension<{
84
+ Nodes: {
85
+ doc: {
86
+ frontmatter?: Frontmatter;
87
+ };
88
+ };
89
+ }>, import("@prosekit/extensions/text").TextExtension, import("@prosekit/extensions/blockquote").BlockquoteExtension, MeowdownListExtension, import("@prosekit/core").Union<readonly [import("@prosekit/extensions/heading").HeadingSpecExtension, import("@prosekit/core").Extension<{
90
+ Nodes: {
91
+ heading: {
92
+ setextUnderline?: number | null;
93
+ };
94
+ };
95
+ }>, import("@prosekit/core").PlainExtension, import("@prosekit/extensions/heading").HeadingCommandsExtension, import("@prosekit/core").PlainExtension]>, import("@prosekit/core").Union<readonly [import("@prosekit/extensions/table").TableSpecExtension, import("@prosekit/extensions/table").TableRowSpecExtension, import("@prosekit/extensions/table").TableCellSpecExtension, import("@prosekit/extensions/table").TableHeaderCellSpecExtension, import("@prosekit/core").PlainExtension, import("@prosekit/extensions/table").TableCommandsExtension, import("@prosekit/core").PlainExtension]>, import("@prosekit/extensions/code-block").CodeBlockExtension, import("@prosekit/extensions/horizontal-rule").HorizontalRuleExtension, import("@prosekit/core").Union<readonly [import("@prosekit/core").Extension<{
39
96
  Marks: {
40
97
  mdMark: import("@prosekit/pm/model").Attrs;
41
98
  };
package/dist/index.js CHANGED
@@ -1,15 +1,19 @@
1
- import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineHistory as s,defineKeymap as c,defineMarkSpec as l,defineMarkView as u,definePlugin as d,getMarkRange as f,getMarkType as p,getNodeType as m,isApple as ee,isAtBlockStart as te,isTextSelection as ne,toggleNode as re,union as h,unsetBlockType as ie,withPriority as ae,withPriority as g,withSkipCodeBlock as oe}from"@prosekit/core";import{defineBlockquote as se}from"@prosekit/extensions/blockquote";import{defineCodeBlock as ce,defineCodeBlockHighlight as le}from"@prosekit/extensions/code-block";import{defineDoc as ue}from"@prosekit/extensions/doc";import{defineGapCursor as de}from"@prosekit/extensions/gap-cursor";import{defineHorizontalRule as fe}from"@prosekit/extensions/horizontal-rule";import{defineList as pe}from"@prosekit/extensions/list";import{defineModClickPrevention as me}from"@prosekit/extensions/mod-click-prevention";import{defineParagraph as he}from"@prosekit/extensions/paragraph";import{defineText as ge}from"@prosekit/extensions/text";import{defineVirtualSelection as _e}from"@prosekit/extensions/virtual-selection";import{Plugin as _,PluginKey as v,TextSelection as y}from"@prosekit/pm/state";import{Decoration as ve,DecorationSet as b}from"@prosekit/pm/view";import{LanguageDescription as ye}from"@codemirror/language";import{languages as be}from"@codemirror/language-data";import{classHighlighter as xe}from"@lezer/highlight";import{createParser as Se}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Ce,defineHeadingInputRule as we,defineHeadingSpec as Te}from"@prosekit/extensions/heading";import{ReplaceStep as Ee,Step as x,StepResult as S,Transform as C}from"@prosekit/pm/transform";import{Mark as De}from"@prosekit/pm/model";import{GFM as Oe,parser as ke}from"@lezer/markdown";import{once as w}from"@ocavue/utils";import{defineTableCellSpec as Ae,defineTableCommands as je,defineTableDropIndicator as Me,defineTableEditingPlugin as Ne,defineTableHeaderCellSpec as Pe,defineTableRowSpec as Fe,defineTableSpec as Ie}from"@prosekit/extensions/table";import{closeHistory as T}from"@prosekit/pm/history";import{definePlaceholder as Le}from"@prosekit/extensions/placeholder";import{defineReadonly as Re}from"@prosekit/extensions/readonly";function E(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return f(i,n)}const ze=new Set([`mdMark`,`mdLinkUri`]),Be=new Set([`mdImageSource`,`mdWikilinkSource`]),D=new v(`mark-mode`);function Ve(e){return new _({key:D,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>Ge(e):void 0,clipboardTextSerializer:e===`show`?void 0:We}})}function He(e){return d(Ve(e))}function Ue(e){return D.getState(e)}function We(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>Be.has(e.type.name))&&e.marks.some(e=>ze.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
- `)}function Ge(e){let{selection:t}=e;if(!t.empty)return b.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return b.empty;let i=f(n,p(e.schema,`mdPack`));return i?b.create(e.doc,[ve.inline(i.from,i.to,{class:`show`})]):b.empty}function O(e,t){let n=Ue(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function k(e,t,n){for(let r of n){let n=E(e,t,r);if(n)return n}}function A(e,t,n){let r=k(e,t,n);return r&&r.to===t?r:void 0}function j(e,t,n){let r=k(e,t,n);return r&&r.from===t?r:void 0}function M(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=k(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function N(e,t){return y.create(e.doc,t.from,t.to)}function Ke(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!ne(t.selection))return!1;let i=t.selection;if(i.empty){let e=j(t,i.from,r);if(e)return n?.(t.tr.setSelection(N(t,e))),!0;if(A(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(y.create(t.doc,i.from+1))),!0)}return!1}let a=M(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.to))),!0):!1}}function qe(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!ne(t.selection))return!1;let i=t.selection;if(i.empty){let e=A(t,i.from,r);return e?(n?.(t.tr.setSelection(N(t,e))),!0):!1}let a=M(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.from))),!0):!1}}function Je(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=A(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!j(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function Ye(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=j(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!A(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}function Xe(e,t){return new _({key:new v(`atomic-mark-selection-${t}`),props:{decorations:n=>{let r=O(e,n);if(r.length===0)return;let i=M(n,r);if(i)return b.create(n.doc,[ve.inline(i.from,i.to,{class:t})])}}})}function Ze({marks:e,selectedClass:n}){return h(g(c({ArrowRight:Ke(e),ArrowLeft:qe(e),Backspace:Je(e),Delete:Ye(e)}),t.high),d(Xe(e,n)))}const P=new Map;async function Qe(e){let t=ye.matchLanguageName(be,e,!0);if(!t){P.set(e,null);return}let n=t.support;if(!n)try{n=await t.load()}catch(t){console.error(`[meowdown] Failed to load language "${e}":`,t),P.set(e,null)}if(P.has(e))return;if(!n){P.set(e,null);return}let r=Se({parse:e=>n.language.parser.parse(e.content),highlighter:xe});P.set(e,r)}const $e=e=>{let t=e.language?.trim();if(!t)return[];let n=P.get(t);return n?n(e):n===null?[]:Qe(t)};function et(){return le({parser:$e,nodeTypes:[`codeBlock`]})}function F(e){return oe(re({type:`heading`,attrs:{level:e}}))}const tt=(e,t,n)=>te(e,n)?.parent.type.name===`heading`?ie()(e,t,n):!1;function nt(){return c({"Mod-1":F(1),"Mod-2":F(2),"Mod-3":F(3),"Mod-4":F(4),"Mod-5":F(5),"Mod-6":F(6),Backspace:tt})}function rt(){return h(Te(),we(),Ce(),nt())}function it(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function at(e,t){let[n,r,i]=t;return[n,r,i.map(t=>De.fromJSON(e,t))]}var I=class e extends x{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return S.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new C(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new C(e),n.addMark(i,c,t));return!1})}return S.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return ot;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new Ee(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(it)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>at(t,e)))}};x.jsonID(`batchSetMark`,I);const ot=new I([]),st=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),ct=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function L(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function lt(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!st.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!ct.test(e))return!1;return!0}const ut=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,dt=/[\s(*_~]/;function ft(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function pt(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function mt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&pt(e,t,`)`)>pt(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const ht={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!ft(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!dt.test(r))return-1;let i=ut.exec(e.slice(n,e.end));if(!i)return-1;let a=mt(i[0]);return a===0||!lt(L(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function gt(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function _t(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const vt={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!gt(t))break;i||=_t(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},yt={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function bt(e){return e.end}const R=ke.configure([Oe,vt,yt,ht]),xt=R.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:bt}]});function z(e){return R.parseInline(e,0)}function B(e,t,n=[]){for(let r of e)t(r)&&n.push(r),B(r.children,t,n);return n}function St(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const V=St(R);function Ct(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function wt(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function Tt(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;let r=document.createElement(`span`);n.appendChild(r);let i=document.createElement(`span`);return i.className=`md-wikilink-label`,i.contentEditable=`false`,i.dataset.testid=`wikilink`,i.textContent=t.display||t.target,n.appendChild(i),{dom:n,contentDOM:r,ignoreMutation:e=>!r.contains(e.target)}}}function Et(){return u({name:`mdWikilinkView`,constructor:Tt()})}const H=new Map([[V.Emphasis,`mdEm`],[V.StrongEmphasis,`mdStrong`],[V.InlineCode,`mdCode`],[V.Strikethrough,`mdDel`],[V.EmphasisMark,`mdMark`],[V.CodeMark,`mdMark`],[V.LinkMark,`mdMark`],[V.StrikethroughMark,`mdMark`],[V.URL,`mdLinkUri`],[V.Hashtag,`mdTag`],[V.WikilinkMark,`mdMark`]]);function Dt(e,t){let n=z(t),r=[];return U(n,[],0,t.length,t,e,r),r}function Ot(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||lt(L(e)))return`https://${e}`}function U(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&W(o,s,n.from,t);let e=n.type;if(e===V.Link)kt(n,t,i,a,o);else if(e===V.Image)At(n,t,i,a,o);else if(e===V.Wikilink)jt(n,t,i,a,o);else if(e===V.URL){let e=Ot(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();W(o,n.from,n.to,[...t,r])}else{let r;e===V.Emphasis?r=`italic`:e===V.StrongEmphasis?r=`bold`:e===V.InlineCode?r=`code`:e===V.Strikethrough?r=`strike`:e===V.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=H.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?W(o,n.from,n.to,l):U(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&W(o,s,r,t)}function kt(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===V.LinkMark?(s++,s===2&&(a=t.from)):t.type===V.URL&&o===null&&(o=t);let c=o?n.slice(o.from,o.to):``,l=c?r.mdLinkText.create({href:c}):null,u=e=>a>=0&&e<a&&l!==null,d=r.mdPack.create({key:`link_${c}`}),f=[...t,d],p=e.from;for(let t of e.children){if(t.from>p){let e=u(p)?[...f,l]:f;W(i,p,t.from,e)}let e=u(t.from)?[...f,l]:f;if(t.type===V.Wikilink){jt(t,e,n,r,i),p=t.to;continue}let a=H.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?W(i,t.from,t.to,o):U(t.children,o,t.from,t.to,n,r,i),p=t.to}p<e.to&&W(i,p,e.to,f)}function At(e,t,n,r,i){let a=e.children.find(e=>e.type===V.URL);if(!a){kt(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===V.LinkMark),s=n.slice(a.from,a.to),c=o.length>=2?n.slice(o[0].to,o[1].from):``,l=r.mdImageSource.create({src:s,alt:c}),u=r.mdImageView.create({src:s,alt:c}),d=r.mdPack.create({key:`image_${s}`}),f=e.to-1,p=e=>e>=f?[...t,d,l,u]:[...t,d,l],m=e.from;for(let t of e.children){t.from>m&&W(i,m,t.from,p(m));let e=H.get(t.type),a=e?[...p(t.from),r[e].create()]:p(t.from);t.children.length===0?W(i,t.from,t.to,a):U(t.children,a,t.from,t.to,n,r,i),m=t.to}m<e.to&&W(i,m,e.to,p(m))}function jt(e,t,n,r,i){let{target:a,display:o}=wt(n.slice(e.from,e.to)),s=r.mdWikilinkSource.create({target:a}),c=r.mdWikilinkView.create({target:a,display:o}),l=e.to-1,u=e=>e>=l?[...t,s,c]:[...t,s],d=e.from;for(let t of e.children){t.from>d&&W(i,d,t.from,u(d));let e=r.mdMark.create();t.from<l&&t.to>l?(W(i,t.from,l,[...u(t.from),e]),W(i,l,t.to,[...u(l),e])):W(i,t.from,t.to,[...u(t.from),e]),d=t.to}d<e.to&&W(i,d,e.to,u(d))}function W(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&Ct(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const Mt=w(()=>{let e=Tn().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),Nt=w(()=>r(Mt())),Pt=`meowdown_mark_builders`;function Ft(e){let t=e.cached[Pt];if(t)return t;let r=n(e);return e.cached[Pt]=r,r}const It=`inline-marks-applied`,Lt=new WeakMap;let Rt=0,zt=0;function Bt(e,t,n){let r=Lt.get(e);if(r?zt++:(Rt++,r=Dt(Ft(n),e.textContent),Lt.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function Vt(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function Ht(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=Bt(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function Ut(){return new _({key:new v(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(It))return null;let r=Ht(n,Vt(e,n));if(r.length===0)return null;let i=n.tr.step(new I(r));return i.setMeta(It,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(Wt(e.state)),{}}})}function Wt(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function Gt(){return d(Ut())}function Kt(){return l({name:`mdImageView`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-anchor`},0],parseDOM:[{tag:`span.md-image-anchor`}]})}function qt(){return l({name:`mdImageSource`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-source`},0],parseDOM:[{tag:`span.md-image-source`}]})}function Jt(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function Yt(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function Xt(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function Zt(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function Qt(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function $t(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function en(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function tn(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function nn(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function rn(){return l({name:`mdWikilinkView`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-anchor`},0],parseDOM:[{tag:`span.md-wikilink-anchor`}]})}function an(){return l({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{default:``}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function on(){return h(Jt(),Yt(),Xt(),Zt(),Qt(),$t(),en(),tn(),nn(),rn(),qt(),Kt(),an())}function sn(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const G={em:{node:V.Emphasis,delim:`*`},strong:{node:V.StrongEmphasis,delim:`**`},code:{node:V.InlineCode,delim:"`"},del:{node:V.Strikethrough,delim:`~~`}},cn=new Set([V.EmphasisMark,V.CodeMark,V.LinkMark,V.StrikethroughMark]);function K(e){return[e.children[0],e.children.at(-1)]}function ln(e){let{type:t,children:n}=e;if(t===V.Emphasis||t===V.StrongEmphasis||t===V.Strikethrough)return[n[0].to,n.at(-1).from];if(t===V.Link||t===V.Image){let e=n.find((e,t)=>t>0&&e.type===V.LinkMark);return e?[n[0].to,e.from]:null}return null}function q(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=ln(r);return i&&i[0]<=t&&n<=i[1]?q(r.children,t,n):q(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function un(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return un(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const J=e=>e===` `||e===` `;function dn(e,t,n){for(;t<n&&J(e[t]);)t++;for(;n>t&&J(e[n-1]);)n--;return[t,n]}function fn(e,t,n,r){let i=B(z(e),e=>e.type===r.node||cn.has(e.type));for(let r=t;r<n;r++)if(!J(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function pn(e,t,n,r,i){let a=z(e),o=B(a,e=>e.type===r.node);return i?gn(e,o,t,n):mn(e,a,o,t,n,r)}function mn(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=q(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=K(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=hn(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function hn(e,t,n,r,i){if(i.node!==V.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(sn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function gn(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=K(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=un(a.children.slice(1,-1),s,c);s>t.to&&J(e[s-1]);)s--;for(;c<o.from&&J(e[c]);)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function _n(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=z(e),o=B(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=K(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return vn(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function vn(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=ln(n);return!e||t<e[0]||t>e[1]?!0:vn(n.children,t)}return!1}function Y(e){return(t,n)=>{if(t.selection.empty)return yn(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=dn(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:fn(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>pn(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(y.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function yn(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=_n(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(y.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(y.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function bn(){return o({toggleEm:()=>Y(G.em),toggleStrong:()=>Y(G.strong),toggleCode:()=>Y(G.code),toggleDel:()=>Y(G.del)})}function xn(){return c({"Mod-b":Y(G.strong),"Mod-i":Y(G.em),"Mod-e":Y(G.code),"Mod-Shift-x":Y(G.del)})}function Sn(){return h(bn(),xn())}function Cn(){return h(Ie(),Fe(),Ae(),Pe(),Ne({allowTableNodeSelection:!0}),je(),Me())}function wn(){return h(he(),ue(),ge(),se(),pe(),rt(),Cn(),ce(),fe(),on(),et(),Gt(),Sn(),Et(),Ze({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),de(),_e(),me())}function Tn(){return wn()}function En(e){let t;return d(new _({key:e.key,props:{handleDOMEvents:{mousedown:e=>{let{from:n,to:r,empty:i}=e.state.selection;return t={from:n,to:r,empty:i},!1}},handleClick:(n,r,i)=>{if(!i.target?.closest?.(e.selector))return!1;let a=e.findHitAt(n.state,r);return!a||!(ee?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e.preventDefault&&i.preventDefault(),e.onClick(a.payload,i),!0)}}}))}const Dn=new v(`meowdown-wikilink-click`);function On(e,t){let n=E(e,t,`mdWikilinkSource`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function kn(e){return En({key:Dn,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=On(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const An=new v(`meowdown-link-click`);function jn(e,t){let n=E(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function Mn(e){return En({key:An,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=jn(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function Nn(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const Pn=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,Fn=/\/status(?:es)?\/(\d+)/;function In(e){let t;try{t=new URL(e)}catch{return}if(Pn.test(t.hostname))return Fn.exec(t.pathname)?.[1]}const Ln=e=>{let t=In(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=Nn()?`dark`:`light`,n=document.createElement(`iframe`);return n.src=`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${e}&dnt=true`,n.title=`Tweet`,n.className=`md-embed md-embed-tweet`,n.dataset.testid=`tweet-embed`,n.loading=`lazy`,n.referrerPolicy=`strict-origin-when-cross-origin`,n.setAttribute(`frameborder`,`0`),Rn(n),n}}};function Rn(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=new MutationObserver(()=>{e.isConnected||(window.removeEventListener(`message`,t),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})}const zn=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,Bn=/^(?:www\.)?youtu\.be$/i,Vn=/^[\w-]{11}$/;function Hn(e){let t;try{t=new URL(e)}catch{return}let n=null;if(Bn.test(t.hostname))n=t.pathname.slice(1);else if(zn.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!Vn.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?Un(r):void 0;return{videoId:n,startSeconds:i}}function Un(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const Wn=[e=>{let t=Hn(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{key:`youtube:${t.videoId}:${t.startSeconds??0}`,render:()=>{let e=document.createElement(`iframe`);return e.src=`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,e.title=`YouTube video`,e.className=`md-embed md-embed-youtube`,e.dataset.testid=`youtube-embed`,e.loading=`lazy`,e.referrerPolicy=`strict-origin-when-cross-origin`,e.setAttribute(`frameborder`,`0`),e.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,e.allowFullscreen=!0,e}}},Ln];function Gn(e){for(let t of Wn){let n=t(e);if(n)return n}}function Kn(e){return/^https?:\/\//i.test(e)?e:void 0}function qn(e,t,n){let r=Gn(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(r.render()),e}let i=(n.resolveImageUrl??Kn)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-preview md-image-preview-img`,a.dataset.testid=`image-preview`;let o=document.createElement(`img`);return o.src=i,o.alt=t,o.draggable=!1,a.appendChild(o),a}function Jn(e){return t=>{let n=t.attrs,r=document.createElement(`span`);r.className=`md-image-view`;let i=document.createElement(`span`);i.className=`md-image-view-content`,r.appendChild(i);let a=qn(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function Yn(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const Xn=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function Zn(e,t,n,r=Xn,i){let a=i;for(let i of t){let t;try{t=await n(i)}catch(e){r(e,i);continue}if(!t||e.isDestroyed)continue;let o=`![](${t})`,s=a==null?e.state.tr.insertText(o):e.state.tr.insertText(o,a);e.dispatch(s),a!=null&&(a+=o.length)}}function Qn(e){return new _({key:new v(`image-input`),props:{handlePaste:(t,n)=>{let r=Yn(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Zn(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Yn(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Zn(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function $n(e={}){return h(u({name:`mdImageView`,constructor:Jn(e)}),g(d(Qn(e)),t.high))}const er=new v(`meowdown-image-click`);function tr(e,t){let n=E(e,t,`mdImageSource`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function nr(e){return d(new _({key:er,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=tr(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const rr=new v(`meowdown-embed-paste`);function ir(e){let t=e.trim();if(!(!t||/\s/.test(t)))return Gn(t)?t:void 0}function ar(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(T(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(T(i))}function or(){return d(new _({key:rr,props:{handlePaste:(e,t)=>{let n=e.state.selection.$from.parent;if(!n.inlineContent||n.type.spec.code)return!1;let r=t.clipboardData?.getData(`text/plain`);if(!r)return!1;let i=ir(r);return i?(ar(e,i),!0):!1}}}))}const sr=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=m(e.schema,`list`),i=m(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(y.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function cr(){return g(c({Enter:sr}),t.high)}const lr={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`},ur=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),dr=be.map(e=>e.name).filter(e=>!ur.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function fr(e){let t=new mr;return hr(e,t),t.finish()}const pr=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];var mr=class{constructor(){this.parts=[],this.linePrefix=``,this.pendingFirst=null,this.atLineStart=!0,this.deferredBlankPrefix=null}write(e){if(e===``)return;if(this.emitDeferredBlankLine(),this.atLineStart&&=(this.parts.push(this.pendingFirst??this.linePrefix),this.pendingFirst=null,!1),!e.includes(`
1
+ import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineHistory as s,defineKeymap as c,defineMarkSpec as l,defineMarkView as u,defineNodeAttr as d,definePlugin as f,getMarkRange as p,getMarkType as m,getNodeType as h,isApple as ee,isAtBlockStart as te,isTextSelection as ne,toggleNode as re,union as g,unsetBlockType as ie,withPriority as ae,withPriority as _,withSkipCodeBlock as oe}from"@prosekit/core";import{defineBlockquote as se}from"@prosekit/extensions/blockquote";import{defineCodeBlock as ce,defineCodeBlockHighlight as le}from"@prosekit/extensions/code-block";import{defineDoc as ue}from"@prosekit/extensions/doc";import{defineGapCursor as de}from"@prosekit/extensions/gap-cursor";import{defineHorizontalRule as fe}from"@prosekit/extensions/horizontal-rule";import{defineModClickPrevention as pe}from"@prosekit/extensions/mod-click-prevention";import{defineParagraph as me}from"@prosekit/extensions/paragraph";import{defineText as he}from"@prosekit/extensions/text";import{defineVirtualSelection as ge}from"@prosekit/extensions/virtual-selection";import{Plugin as v,PluginKey as y,TextSelection as b}from"@prosekit/pm/state";import{Decoration as _e,DecorationSet as x}from"@prosekit/pm/view";import{LanguageDescription as ve}from"@codemirror/language";import{languages as ye}from"@codemirror/language-data";import{classHighlighter as be}from"@lezer/highlight";import{createParser as xe}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Se,defineHeadingInputRule as Ce,defineHeadingSpec as we}from"@prosekit/extensions/heading";import{ReplaceStep as Te,Step as Ee,StepResult as De,Transform as Oe}from"@prosekit/pm/transform";import{Mark as ke}from"@prosekit/pm/model";import{GFM as Ae,parser as je}from"@lezer/markdown";import{once as Me}from"@ocavue/utils";import{defineList as Ne}from"@prosekit/extensions/list";import{defineTableCellSpec as Pe,defineTableCommands as Fe,defineTableDropIndicator as Ie,defineTableEditingPlugin as Le,defineTableHeaderCellSpec as Re,defineTableRowSpec as ze,defineTableSpec as Be}from"@prosekit/extensions/table";import{closeHistory as S}from"@prosekit/pm/history";import{definePlaceholder as Ve}from"@prosekit/extensions/placeholder";import{defineReadonly as He}from"@prosekit/extensions/readonly";function C(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return p(i,n)}const Ue=new Set([`mdMark`,`mdLinkUri`]),We=new Set([`mdImageSource`,`mdWikilinkSource`]),Ge=new y(`mark-mode`);function Ke(e){return new v({key:Ge,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>Xe(e):void 0,clipboardTextSerializer:e===`show`?void 0:Ye}})}function qe(e){return f(Ke(e))}function Je(e){return Ge.getState(e)}function Ye(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>We.has(e.type.name))&&e.marks.some(e=>Ue.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
+ `)}function Xe(e){let{selection:t}=e;if(!t.empty)return x.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return x.empty;let i=p(n,m(e.schema,`mdPack`));return i?x.create(e.doc,[_e.inline(i.from,i.to,{class:`show`})]):x.empty}function w(e,t){let n=Je(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function T(e,t,n){for(let r of n){let n=C(e,t,r);if(n)return n}}function E(e,t,n){let r=T(e,t,n);return r&&r.to===t?r:void 0}function D(e,t,n){let r=T(e,t,n);return r&&r.from===t?r:void 0}function O(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=T(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function Ze(e,t){return b.create(e.doc,t.from,t.to)}function Qe(e){return(t,n)=>{let r=w(e,t);if(r.length===0||!ne(t.selection))return!1;let i=t.selection;if(i.empty){let e=D(t,i.from,r);if(e)return n?.(t.tr.setSelection(Ze(t,e))),!0;if(E(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(b.create(t.doc,i.from+1))),!0)}return!1}let a=O(t,r);return a?(n?.(t.tr.setSelection(b.create(t.doc,a.to))),!0):!1}}function $e(e){return(t,n)=>{let r=w(e,t);if(r.length===0||!ne(t.selection))return!1;let i=t.selection;if(i.empty){let e=E(t,i.from,r);return e?(n?.(t.tr.setSelection(Ze(t,e))),!0):!1}let a=O(t,r);return a?(n?.(t.tr.setSelection(b.create(t.doc,a.from))),!0):!1}}function et(e){return(t,n)=>{let r=w(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=E(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!D(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function tt(e){return(t,n)=>{let r=w(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=D(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!E(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}function nt(e,t){return new v({key:new y(`atomic-mark-selection-${t}`),props:{decorations:n=>{let r=w(e,n);if(r.length===0)return;let i=O(n,r);if(i)return x.create(n.doc,[_e.inline(i.from,i.to,{class:t})])}}})}function rt({marks:e,selectedClass:n}){return g(_(c({ArrowRight:Qe(e),ArrowLeft:$e(e),Backspace:et(e),Delete:tt(e)}),t.high),f(nt(e,n)))}const k=new Map;async function it(e){let t=ve.matchLanguageName(ye,e,!0);if(!t){k.set(e,null);return}let n=t.support;if(!n)try{n=await t.load()}catch(t){console.error(`[meowdown] Failed to load language "${e}":`,t),k.set(e,null)}if(k.has(e))return;if(!n){k.set(e,null);return}let r=xe({parse:e=>n.language.parser.parse(e.content),highlighter:be});k.set(e,r)}const at=e=>{let t=e.language?.trim();if(!t)return[];let n=k.get(t);return n?n(e):n===null?[]:it(t)};function ot(){return le({parser:at,nodeTypes:[`codeBlock`]})}function st(){return d({type:`doc`,attr:`frontmatter`,default:null})}function ct(){return d({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function A(e){return oe(re({type:`heading`,attrs:{level:e}}))}const lt=(e,t,n)=>te(e,n)?.parent.type.name===`heading`?ie()(e,t,n):!1;function ut(){return c({"Mod-1":A(1),"Mod-2":A(2),"Mod-3":A(3),"Mod-4":A(4),"Mod-5":A(5),"Mod-6":A(6),Backspace:lt})}function dt(){return g(we(),ct(),Ce(),Se(),ut())}function ft(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function pt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>ke.fromJSON(e,t))]}var j=class e extends Ee{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return De.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new Oe(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Oe(e),n.addMark(i,c,t));return!1})}return De.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return mt;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new Te(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(ft)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>pt(t,e)))}};Ee.jsonID(`batchSetMark`,j);const mt=new j([]),ht=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),gt=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function _t(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function vt(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!ht.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!gt.test(e))return!1;return!0}function yt(e){return e===32||e===9||e===10||e===13}const bt=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,xt=/[\s(*_~]/;function St(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function Ct(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function wt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&Ct(e,t,`)`)>Ct(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const Tt={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!St(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!xt.test(r))return-1;let i=bt.exec(e.slice(n,e.end));if(!i)return-1;let a=wt(i[0]);return a===0||!vt(_t(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function Et(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function Dt(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const Ot={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!Et(t))break;i||=Dt(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},kt={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function At(e){return e.end}const M=je.configure([Ae,Ot,kt,Tt]),jt=M.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:At}]});function N(e){return M.parseInline(e,0)}function P(e,t,n=[]){for(let r of e)t(r)&&n.push(r),P(r.children,t,n);return n}function Mt(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const F=Mt(M);function Nt(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function Pt(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function Ft(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;let r=document.createElement(`span`);n.appendChild(r);let i=document.createElement(`span`);return i.className=`md-wikilink-label`,i.contentEditable=`false`,i.dataset.testid=`wikilink`,i.textContent=t.display||t.target,n.appendChild(i),{dom:n,contentDOM:r,ignoreMutation:e=>!r.contains(e.target)}}}function It(){return u({name:`mdWikilinkView`,constructor:Ft()})}const I=new Map([[F.Emphasis,`mdEm`],[F.StrongEmphasis,`mdStrong`],[F.InlineCode,`mdCode`],[F.Strikethrough,`mdDel`],[F.EmphasisMark,`mdMark`],[F.CodeMark,`mdMark`],[F.LinkMark,`mdMark`],[F.StrikethroughMark,`mdMark`],[F.URL,`mdLinkUri`],[F.Hashtag,`mdTag`],[F.WikilinkMark,`mdMark`]]);function Lt(e,t){let n=N(t),r=[];return L(n,[],0,t.length,t,e,r),r}function Rt(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||vt(_t(e)))return`https://${e}`}function L(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&B(o,s,n.from,t);let e=n.type;if(e===F.Link)R(n,t,i,a,o);else if(e===F.Image)zt(n,t,i,a,o);else if(e===F.Wikilink)z(n,t,i,a,o);else if(e===F.URL){let e=Rt(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();B(o,n.from,n.to,[...t,r])}else{let r;e===F.Emphasis?r=`italic`:e===F.StrongEmphasis?r=`bold`:e===F.InlineCode?r=`code`:e===F.Strikethrough?r=`strike`:e===F.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=I.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?B(o,n.from,n.to,l):L(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&B(o,s,r,t)}function R(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===F.LinkMark?(s++,s===2&&(a=t.from)):t.type===F.URL&&o===null&&(o=t);let c=o?n.slice(o.from,o.to):``,l=c?r.mdLinkText.create({href:c}):null,u=e=>a>=0&&e<a&&l!==null,d=r.mdPack.create({key:`link_${c}`}),f=[...t,d],p=e.from;for(let t of e.children){if(t.from>p){let e=u(p)?[...f,l]:f;B(i,p,t.from,e)}let e=u(t.from)?[...f,l]:f;if(t.type===F.Wikilink){z(t,e,n,r,i),p=t.to;continue}let a=I.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?B(i,t.from,t.to,o):L(t.children,o,t.from,t.to,n,r,i),p=t.to}p<e.to&&B(i,p,e.to,f)}function zt(e,t,n,r,i){let a=e.children.find(e=>e.type===F.URL);if(!a){R(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===F.LinkMark),s=n.slice(a.from,a.to),c=o.length>=2?n.slice(o[0].to,o[1].from):``,l=r.mdImageSource.create({src:s,alt:c}),u=r.mdImageView.create({src:s,alt:c}),d=r.mdPack.create({key:`image_${s}`}),f=e.to-1,p=e=>e>=f?[...t,d,l,u]:[...t,d,l],m=e.from;for(let t of e.children){t.from>m&&B(i,m,t.from,p(m));let e=I.get(t.type),a=e?[...p(t.from),r[e].create()]:p(t.from);t.children.length===0?B(i,t.from,t.to,a):L(t.children,a,t.from,t.to,n,r,i),m=t.to}m<e.to&&B(i,m,e.to,p(m))}function z(e,t,n,r,i){let{target:a,display:o}=Pt(n.slice(e.from,e.to)),s=r.mdWikilinkSource.create({target:a}),c=r.mdWikilinkView.create({target:a,display:o}),l=e.to-1,u=e=>e>=l?[...t,s,c]:[...t,s],d=e.from;for(let t of e.children){t.from>d&&B(i,d,t.from,u(d));let e=r.mdMark.create();t.from<l&&t.to>l?(B(i,t.from,l,[...u(t.from),e]),B(i,l,t.to,[...u(l),e])):B(i,t.from,t.to,[...u(t.from),e]),d=t.to}d<e.to&&B(i,d,e.to,u(d))}function B(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&Nt(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const Bt=Me(()=>{let e=Nn().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),Vt=Me(()=>r(Bt())),V=`meowdown_mark_builders`;function Ht(e){let t=e.cached[V];if(t)return t;let r=n(e);return e.cached[V]=r,r}const H=`inline-marks-applied`,Ut=new WeakMap;let Wt=0,Gt=0;function Kt(e,t,n){let r=Ut.get(e);if(r?Gt++:(Wt++,r=Lt(Ht(n),e.textContent),Ut.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function qt(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function Jt(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=Kt(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function Yt(){return new v({key:new y(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(H))return null;let r=Jt(n,qt(e,n));if(r.length===0)return null;let i=n.tr.step(new j(r));return i.setMeta(H,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(Xt(e.state)),{}}})}function Xt(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function Zt(){return f(Yt())}function Qt(){return l({name:`mdImageView`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-anchor`},0],parseDOM:[{tag:`span.md-image-anchor`}]})}function $t(){return l({name:`mdImageSource`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-source`},0],parseDOM:[{tag:`span.md-image-source`}]})}function en(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function tn(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function nn(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function rn(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function an(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function on(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function sn(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function cn(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function ln(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function un(){return l({name:`mdWikilinkView`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-anchor`},0],parseDOM:[{tag:`span.md-wikilink-anchor`}]})}function dn(){return l({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{default:``}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function fn(){return g(en(),tn(),nn(),rn(),an(),on(),sn(),cn(),ln(),un(),$t(),Qt(),dn())}function pn(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const U={em:{node:F.Emphasis,delim:`*`},strong:{node:F.StrongEmphasis,delim:`**`},code:{node:F.InlineCode,delim:"`"},del:{node:F.Strikethrough,delim:`~~`}},mn=new Set([F.EmphasisMark,F.CodeMark,F.LinkMark,F.StrikethroughMark]);function W(e){return[e.children[0],e.children.at(-1)]}function G(e){let{type:t,children:n}=e;if(t===F.Emphasis||t===F.StrongEmphasis||t===F.Strikethrough)return[n[0].to,n.at(-1).from];if(t===F.Link||t===F.Image){let e=n.find((e,t)=>t>0&&e.type===F.LinkMark);return e?[n[0].to,e.from]:null}return null}function K(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=G(r);return i&&i[0]<=t&&n<=i[1]?K(r.children,t,n):K(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function hn(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return hn(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const q=e=>e===` `||e===` `;function gn(e,t,n){for(;t<n&&q(e[t]);)t++;for(;n>t&&q(e[n-1]);)n--;return[t,n]}function _n(e,t,n,r){let i=P(N(e),e=>e.type===r.node||mn.has(e.type));for(let r=t;r<n;r++)if(!q(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function vn(e,t,n,r,i){let a=N(e),o=P(a,e=>e.type===r.node);return i?xn(e,o,t,n):yn(e,a,o,t,n,r)}function yn(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=K(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=W(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=bn(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function bn(e,t,n,r,i){if(i.node!==F.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(pn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function xn(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=W(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=hn(a.children.slice(1,-1),s,c);s>t.to&&q(e[s-1]);)s--;for(;c<o.from&&q(e[c]);)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function Sn(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=N(e),o=P(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=W(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return Cn(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function Cn(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=G(n);return!e||t<e[0]||t>e[1]?!0:Cn(n.children,t)}return!1}function J(e){return(t,n)=>{if(t.selection.empty)return wn(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=gn(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:_n(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>vn(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(b.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function wn(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=Sn(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(b.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(b.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Tn(){return o({toggleEm:()=>J(U.em),toggleStrong:()=>J(U.strong),toggleCode:()=>J(U.code),toggleDel:()=>J(U.del)})}function En(){return c({"Mod-b":J(U.strong),"Mod-i":J(U.em),"Mod-e":J(U.code),"Mod-Shift-x":J(U.del)})}function Dn(){return g(Tn(),En())}function On(){return d({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function kn(){return d({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function An(){return g(Ne(),On(),kn())}function jn(){return g(Be(),ze(),Pe(),Re(),Le({allowTableNodeSelection:!0}),Fe(),Ie())}function Mn(){return g(me(),ue(),st(),he(),se(),An(),dt(),jn(),ce(),fe(),fn(),ot(),Zt(),Dn(),It(),rt({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),de(),ge(),pe())}function Nn(){return Mn()}function Pn(e){let t;return f(new v({key:e.key,props:{handleDOMEvents:{mousedown:e=>{let{from:n,to:r,empty:i}=e.state.selection;return t={from:n,to:r,empty:i},!1}},handleClick:(n,r,i)=>{if(!i.target?.closest?.(e.selector))return!1;let a=e.findHitAt(n.state,r);return!a||!(ee?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e.preventDefault&&i.preventDefault(),e.onClick(a.payload,i),!0)}}}))}const Fn=new y(`meowdown-wikilink-click`);function In(e,t){let n=C(e,t,`mdWikilinkSource`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function Ln(e){return Pn({key:Fn,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=In(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const Rn=new y(`meowdown-link-click`);function zn(e,t){let n=C(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function Bn(e){return Pn({key:Rn,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=zn(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function Vn(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const Hn=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,Un=/\/status(?:es)?\/(\d+)/;function Wn(e){let t;try{t=new URL(e)}catch{return}if(Hn.test(t.hostname))return Un.exec(t.pathname)?.[1]}const Gn=e=>{let t=Wn(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=Vn()?`dark`:`light`,n=document.createElement(`iframe`);return n.src=`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${e}&dnt=true`,n.title=`Tweet`,n.className=`md-embed md-embed-tweet`,n.dataset.testid=`tweet-embed`,n.loading=`lazy`,n.referrerPolicy=`strict-origin-when-cross-origin`,n.setAttribute(`frameborder`,`0`),Kn(n),n}}};function Kn(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=new MutationObserver(()=>{e.isConnected||(window.removeEventListener(`message`,t),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})}const qn=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,Jn=/^(?:www\.)?youtu\.be$/i,Yn=/^[\w-]{11}$/;function Xn(e){let t;try{t=new URL(e)}catch{return}let n=null;if(Jn.test(t.hostname))n=t.pathname.slice(1);else if(qn.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!Yn.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?Zn(r):void 0;return{videoId:n,startSeconds:i}}function Zn(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const Qn=[e=>{let t=Xn(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{key:`youtube:${t.videoId}:${t.startSeconds??0}`,render:()=>{let e=document.createElement(`iframe`);return e.src=`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,e.title=`YouTube video`,e.className=`md-embed md-embed-youtube`,e.dataset.testid=`youtube-embed`,e.loading=`lazy`,e.referrerPolicy=`strict-origin-when-cross-origin`,e.setAttribute(`frameborder`,`0`),e.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,e.allowFullscreen=!0,e}}},Gn];function $n(e){for(let t of Qn){let n=t(e);if(n)return n}}function er(e){return/^https?:\/\//i.test(e)?e:void 0}function tr(e,t,n){let r=$n(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(r.render()),e}let i=(n.resolveImageUrl??er)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-preview md-image-preview-img`,a.dataset.testid=`image-preview`;let o=document.createElement(`img`);return o.src=i,o.alt=t,o.draggable=!1,a.appendChild(o),a}function nr(e){return t=>{let n=t.attrs,r=document.createElement(`span`);r.className=`md-image-view`;let i=document.createElement(`span`);i.className=`md-image-view-content`,r.appendChild(i);let a=tr(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function rr(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const ir=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function ar(e,t,n,r=ir,i){let a=i;for(let i of t){let t;try{t=await n(i)}catch(e){r(e,i);continue}if(!t||e.isDestroyed)continue;let o=`![](${t})`,s=a==null?e.state.tr.insertText(o):e.state.tr.insertText(o,a);e.dispatch(s),a!=null&&(a+=o.length)}}function or(e){return new v({key:new y(`image-input`),props:{handlePaste:(t,n)=>{let r=rr(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(ar(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=rr(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(ar(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function sr(e={}){return g(u({name:`mdImageView`,constructor:nr(e)}),_(f(or(e)),t.high))}const cr=new y(`meowdown-image-click`);function lr(e,t){let n=C(e,t,`mdImageSource`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function ur(e){return f(new v({key:cr,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=lr(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const dr=new y(`meowdown-embed-paste`);function fr(e){let t=e.trim();if(!(!t||/\s/.test(t)))return $n(t)?t:void 0}function pr(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
3
+ `)}function mr(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(S(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(S(i))}function hr(){return f(new v({key:dr,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=pr(t,n);if(!i)return!1;let a=fr(i);return a?(mr(e,a),!0):!1}}}))}const gr=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=h(e.schema,`list`),i=h(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(b.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function _r(){return _(c({Enter:gr}),t.high)}const vr={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`},yr=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),br=ye.map(e=>e.name).filter(e=>!yr.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function xr(e){let t=new Tr;return Sr(e.attrs.frontmatter,t),Er(e,t),t.finish()}function Sr(e,t){e!==null&&(t.write(`---`),t.write(`
4
+ `),e!==``&&(t.write(e),t.write(`
5
+ `)),t.write(`---`),t.closeBlock())}const Cr=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function wr(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){X(e,t);let i=n.level===1?`=`:`-`;t.write(`
6
+ `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(Cr[n.level]??`# `),X(e,t),t.closeBlock()}var Tr=class{constructor(){this.parts=[],this.linePrefix=``,this.pendingFirst=null,this.atLineStart=!0,this.deferredBlankPrefix=null}write(e){if(e===``)return;if(this.emitDeferredBlankLine(),this.atLineStart&&=(this.parts.push(this.pendingFirst??this.linePrefix),this.pendingFirst=null,!1),!e.includes(`
3
7
  `)){this.parts.push(e);return}let t=e.split(`
4
8
  `);for(let e=0;e<t.length;e++)e>0&&this.parts.push(`
5
9
  `,this.linePrefix),t[e]!==``&&this.parts.push(t[e])}closeBlock(){this.atLineStart&&this.pendingFirst!==null&&(this.emitDeferredBlankLine(),this.parts.push(this.pendingFirst.trimEnd()),this.pendingFirst=null,this.atLineStart=!1),this.atLineStart||this.parts.push(`
6
- `),this.atLineStart=!0,this.deferredBlankPrefix=this.linePrefix}suppressBlank(){this.deferredBlankPrefix=null}withPrefix(e,t,n){let r=this.linePrefix,i=this.pendingFirst;if(this.linePrefix=r+e,t!==null){let e=i??r;this.pendingFirst=e+t}n(),this.linePrefix=r,this.pendingFirst=i}finish(){return this.parts.join(``).replace(/\s+$/,``)+`
10
+ `),this.atLineStart=!0,this.deferredBlankPrefix=this.linePrefix}suppressBlank(){this.deferredBlankPrefix=null}withPrefix(e,t,n){let r=this.linePrefix,i=this.pendingFirst;if(this.linePrefix=r+e,t!==null){let e=i??r;this.pendingFirst=e+t}n(),this.linePrefix=r,this.pendingFirst=t===null?i:null}finish(){return this.parts.join(``).replace(/\s+$/,``)+`
7
11
  `}emitDeferredBlankLine(){let e=this.deferredBlankPrefix;e!==null&&(this.parts.push(e.trimEnd(),`
8
- `),this.deferredBlankPrefix=null)}};function hr(e,t){switch(e.type.name){case`doc`:X(e,t);return;case`paragraph`:_r(e,t),t.closeBlock();return;case`heading`:{let n=e.attrs;t.write(pr[n.level]??`# `),_r(e,t),t.closeBlock();return}case`blockquote`:t.withPrefix(`> `,`> `,()=>X(e,t)),t.closeBlock();return;case`list`:vr(e,t,Z(e));return;case`codeBlock`:yr(e,t);return;case`horizontalRule`:t.write(`---`),t.closeBlock();return;case`table`:br(e,t);return;case`text`:e.text&&t.write(e.text);return}}function X(e,t,n=!1){let r=e.childCount,i=0;for(;i<r;){let a=e.child(i);if(a.type.name!==`list`){n&&i>0&&t.suppressBlank(),hr(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=gr(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),vr(e.child(r),t,s);i=o}}function gr(e,t,n){for(let r=t;r<n;r++)if(!Z(e.child(r)))return!1;return!0}function Z(e){let t=e.childCount;for(let n=0;n<t;n++){let t=e.child(n);if(t.type.name!==`list`&&!(t.type.name===`paragraph`&&n===0))return!1}return!0}function _r(e,t){let n=e.childCount;for(let r=0;r<n;r++){let n=e.child(r);n.isText&&n.text&&t.write(n.text)}}function vr(e,t,n){let r=e.attrs,i=r.kind===`ordered`?`${r.order??1}. `:r.kind===`task`?r.checked?`- [x] `:`- [ ] `:`- `,a=` `.repeat(r.kind===`task`?2:i.length);t.withPrefix(a,i,()=>X(e,t,n)),t.closeBlock()}function yr(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(sn(r,2)+1);t.write(i),n&&t.write(n),t.write(`
9
- `),t.write(r),t.write(`
10
- `),t.write(i),t.closeBlock()}function br(e,t){let n=e.childCount;if(n===0)return;let r=[],i=0,a=-1;for(let t=0;t<n;t++){let n=e.child(t),o=[],s=!1;for(let e=0;e<n.childCount;e++){let t=n.child(e);t.type.name===`tableHeaderCell`&&(s=!0),o.push(Sr(t))}s&&a<0&&(a=t),o.length>i&&(i=o.length),r.push(o)}if(i===0)return;let o=`| `+Array(i).fill(`---`).join(` | `)+` |`,s=a>=0?r[a]:Array(i).fill(``);t.write(xr(s,i)),t.write(`
12
+ `),this.deferredBlankPrefix=null)}};function Er(e,t){switch(e.type.name){case`doc`:Y(e,t);return;case`paragraph`:X(e,t),t.closeBlock();return;case`heading`:wr(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>Y(e,t)),t.closeBlock();return;case`list`:kr(e,t,Or(e));return;case`codeBlock`:Ar(e,t);return;case`horizontalRule`:t.write(`---`),t.closeBlock();return;case`table`:jr(e,t);return;case`text`:e.text&&t.write(e.text);return}}function Y(e,t,n=!1){let r=e.childCount,i=0;for(;i<r;){let a=e.child(i);if(a.type.name!==`list`){n&&i>0&&t.suppressBlank(),Er(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=Dr(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),kr(e.child(r),t,s);i=o}}function Dr(e,t,n){for(let r=t;r<n;r++)if(!Or(e.child(r)))return!1;return!0}function Or(e){let t=e.childCount;for(let n=0;n<t;n++){let t=e.child(n);if(t.type.name!==`list`&&!(t.type.name===`paragraph`&&n===0))return!1}return!0}function X(e,t){let n=e.childCount;for(let r=0;r<n;r++){let n=e.child(r);n.isText&&n.text&&t.write(n.text)}}function kr(e,t,n){let r=e.attrs,i=r.marker===`*`||r.marker===`+`?r.marker:`-`,a=r.marker===`)`?`)`:`.`,o=r.taskMarker===`X`?`X`:`x`,s=r.kind===`ordered`?`${r.order??1}${a} `:r.kind===`task`?`${i} [${r.checked?o:` `}] `:`${i} `,c=` `.repeat(r.kind===`task`?2:s.length);t.withPrefix(c,s,()=>Y(e,t,n)),t.closeBlock()}function Ar(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(pn(r,2)+1);t.write(i),n&&t.write(n),t.write(`
13
+ `),r&&(t.write(r),t.write(`
14
+ `)),t.write(i),t.closeBlock()}function jr(e,t){let n=e.childCount;if(n===0)return;let r=[],i=0,a=-1;for(let t=0;t<n;t++){let n=e.child(t),o=[],s=!1;for(let e=0;e<n.childCount;e++){let t=n.child(e);t.type.name===`tableHeaderCell`&&(s=!0),o.push(Nr(t))}s&&a<0&&(a=t),o.length>i&&(i=o.length),r.push(o)}if(i===0)return;let o=`| `+Array(i).fill(`---`).join(` | `)+` |`,s=a>=0?r[a]:Array(i).fill(``);t.write(Mr(s,i)),t.write(`
11
15
  `),t.write(o);for(let e=0;e<n;e++)e!==a&&(t.write(`
12
- `),t.write(xr(r[e],i)));t.closeBlock()}function xr(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Sr(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
16
+ `),t.write(Mr(r[e],i)));t.closeBlock()}function Mr(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Nr(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
13
17
  `)?t:t.replaceAll(`|`,String.raw`\|`).replaceAll(`
14
- `,` `)}function Cr(e,t=Nt()){let n=wr(t,xt.parse(e).cursor(),e);return t.doc(n)}function wr(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...Q(e,t,n));while(t.nextSibling());return t.parent(),r}function Q(e,t,n){switch(t.type.id){case V.ATXHeading1:return[$(e,t,n,1)];case V.ATXHeading2:return[$(e,t,n,2)];case V.ATXHeading3:return[$(e,t,n,3)];case V.ATXHeading4:return[$(e,t,n,4)];case V.ATXHeading5:return[$(e,t,n,5)];case V.ATXHeading6:return[$(e,t,n,6)];case V.SetextHeading1:return[$(e,t,n,1)];case V.SetextHeading2:return[$(e,t,n,2)];case V.Paragraph:return[Tr(e,t,n)];case V.Blockquote:return[Er(e,t,n)];case V.BulletList:return Dr(e,t,n,`bullet`,1);case V.OrderedList:return Or(e,t,n);case V.FencedCode:case V.CodeBlock:return[jr(e,t,n)];case V.HorizontalRule:return[e.horizontalRule()];case V.Table:return[Mr(e,t,n)];case V.Task:return[Tr(e,t,n)];default:return[]}}function $(e,t,n,r){let i=t.from,a=t.to;if(t.firstChild()){t.type.id===V.HeaderMark&&(i=t.to);let e=-1,n=-1;do e=t.type.id,n=t.from;while(t.nextSibling());e===V.HeaderMark&&n>i&&(a=n),t.parent()}let o=n.slice(i,a).trim();return e.heading({level:r},o)}function Tr(e,t,n){let r=n.slice(t.from,t.to);return e.paragraph(r)}function Er(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===V.QuoteMark)continue;r.push(...Q(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function Dr(e,t,n,r,i){let a=[];if(t.firstChild()){do t.type.id===V.ListItem&&a.push(kr(e,t,n,r,i));while(t.nextSibling());t.parent()}return a}function Or(e,t,n){let r=1;if(t.firstChild()){if(t.type.id===V.ListItem&&t.firstChild()){if(t.type.id===V.ListMark){let e=n.slice(t.from,t.to),i=Number.parseInt(e,10);Number.isFinite(i)&&(r=i)}t.parent()}t.parent()}return Dr(e,t,n,`ordered`,r)}function kr(e,t,n,r,i){let a=[],o=null;if(t.firstChild()){do{if(t.type.id===V.ListMark)continue;if(r===`bullet`&&t.type.id===V.Task){let r=Ar(e,t,n);o=r.checked,a.push(r.paragraph);continue}a.push(...Q(e,t,n))}while(t.nextSibling());t.parent()}return e.list({kind:o===null?r:`task`,order:r===`ordered`?i:null,checked:o??!1,collapsed:!1},a)}function Ar(e,t,n){let r=!1,i=t.from,a=t.to;t.firstChild()&&(t.type.id===V.TaskMarker&&(r=n.slice(t.from,t.to).toLowerCase().includes(`x`),i=t.to),t.parent());let o=n.slice(i,a);return o.startsWith(` `)&&(o=o.slice(1)),{checked:r,paragraph:o===``?e.paragraph():e.paragraph(o)}}function jr(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case V.CodeInfo:r=n.slice(t.from,t.to);break;case V.CodeText:i=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function Mr(e,t,n){let r=0;if(t.firstChild()){do t.type.id===V.TableDelimiter&&(r=Nr(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===V.TableHeader?i.push(Pr(e,t,n,!0,r)):a===V.TableRow&&i.push(Pr(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function Nr(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function Pr(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===V.TableDelimiter,r=0;do if(t.type.id===V.TableDelimiter)r++;else if(t.type.id===V.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim())}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}function Fr(e){return e.replace(/\n+$/u,``)}function Ir(e){return e.split(`
15
- `).filter(e=>e.trim()!==``)}function Lr(e){let t=fr(Cr(e));if(Fr(t)===Fr(e))return`exact`;let n=Ir(e),r=Ir(t);return n.length===r.length&&n.every((e,t)=>e===r[t])?`normalizing`:`lossy`}export{lr as EDITOR_KEY_BINDINGS,e as Priority,Lr as checkRoundTrip,dr as codeBlockLanguages,cr as defineBulletAfterHeading,Tn as defineEditorExtension,or as defineEmbedPaste,$n as defineImage,nr as defineImageClickHandler,Mn as defineLinkClickHandler,He as defineMarkMode,Le as definePlaceholder,Re as defineReadonly,kn as defineWikilinkClickHandler,fr as docToMarkdown,Cr as markdownToDoc,ae as withPriority};
18
+ `,` `)}function Pr(e,t=Vt()){let[n,r]=Ir(e),i=r?e.slice(r):e,a=Lr(t,jt.parse(i).cursor(),i);return t.doc({frontmatter:n},a)}const Fr=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function Ir(e){let t=Fr.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function Lr(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...Z(e,t,n));while(t.nextSibling());return t.parent(),r}function Z(e,t,n){switch(t.type.id){case F.ATXHeading1:return[Q(e,t,n,1,!1)];case F.ATXHeading2:return[Q(e,t,n,2,!1)];case F.ATXHeading3:return[Q(e,t,n,3,!1)];case F.ATXHeading4:return[Q(e,t,n,4,!1)];case F.ATXHeading5:return[Q(e,t,n,5,!1)];case F.ATXHeading6:return[Q(e,t,n,6,!1)];case F.SetextHeading1:return[Q(e,t,n,1,!0)];case F.SetextHeading2:return[Q(e,t,n,2,!0)];case F.Paragraph:return[$(e,t,n)];case F.HTMLBlock:case F.CommentBlock:case F.ProcessingInstructionBlock:return[$(e,t,n)];case F.Blockquote:return[zr(e,t,n)];case F.BulletList:return Br(e,t,n,`bullet`);case F.OrderedList:return Br(e,t,n,`ordered`);case F.FencedCode:case F.CodeBlock:return[Hr(e,t,n)];case F.HorizontalRule:return[e.horizontalRule()];case F.Table:return[Ur(e,t,n)];case F.Task:return[$(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[$(e,t,n)])}}function Q(e,t,n,r,i){let a=t.from,o=t.from,s=t.to,c=-1,l=-1;if(t.firstChild()){t.type.id===F.HeaderMark&&t.from===a&&(o=t.to);let e=-1,n=-1,r=-1;do e=t.type.id,n=t.from,r=t.to;while(t.nextSibling());e===F.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=n.slice(o,s).trim(),d=i?Rr(n,c,l)||1:null;return e.heading({level:r,setextUnderline:d},u)}function Rr(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++){let t=e.charCodeAt(i);(t===61||t===45)&&r++}return r}function $(e,t,n){let r=t.from,i=t.to;if(t.firstChild()){let a=``,o=r;do t.type.id===F.QuoteMark&&(a+=n.slice(o,t.from),o=t.to,yt(n.charCodeAt(o))&&(o+=1));while(t.nextSibling());return t.parent(),a+=n.slice(o,i),a===``?e.paragraph():e.paragraph(a)}return e.paragraph(n.slice(r,i))}function zr(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===F.QuoteMark)continue;r.push(...Z(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function Br(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===F.ListItem&&i.push(Vr(e,t,n,r));while(t.nextSibling());t.parent()}return i}function Vr(e,t,n,r){let i=[],a,o,s,c;if(t.firstChild()){do{if(t.type.id===F.ListMark){if(r===`ordered`){let e=n.charCodeAt(t.to-1);e===41?c=`)`:e===46&&(c=`.`);let r=Number.parseInt(n.slice(t.from,t.to),10);s=Number.isFinite(r)?r:1}else{let e=n.charCodeAt(t.from);c=e===42?`*`:e===43?`+`:`-`}continue}if(r===`bullet`&&t.type.id===F.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===F.TaskMarker){let e=n.charCodeAt(t.from+1);e===120?(a=!0,o=`x`):e===88&&(a=!0,o=`X`),r=t.to}t.parent()}yt(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(c===``?e.paragraph():e.paragraph(c));continue}i.push(...Z(e,t,n))}while(t.nextSibling());t.parent()}return e.list({kind:a==null?r:`task`,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:!1,marker:c,taskMarker:o},i)}function Hr(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case F.CodeInfo:r=n.slice(t.from,t.to);break;case F.CodeText:i=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function Ur(e,t,n){let r=0;if(t.firstChild()){do t.type.id===F.TableDelimiter&&(r=Wr(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===F.TableHeader?i.push(Gr(e,t,n,!0,r)):a===F.TableRow&&i.push(Gr(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function Wr(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function Gr(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===F.TableDelimiter,r=0;do if(t.type.id===F.TableDelimiter)r++;else if(t.type.id===F.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim().replaceAll(String.raw`\|`,`|`))}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}function Kr(e){return e.replace(/\n+$/u,``)}function qr(e){return e.split(`
19
+ `).filter(e=>e.trim()!==``)}function Jr(e){let t=xr(Pr(e));if(Kr(t)===Kr(e))return`exact`;let n=qr(e),r=qr(t);return n.length===r.length&&n.every((e,t)=>e===r[t])?`normalizing`:`lossy`}export{vr as EDITOR_KEY_BINDINGS,e as Priority,Jr as checkRoundTrip,br as codeBlockLanguages,_r as defineBulletAfterHeading,Nn as defineEditorExtension,hr as defineEmbedPaste,sr as defineImage,ur as defineImageClickHandler,Bn as defineLinkClickHandler,qe as defineMarkMode,Ve as definePlaceholder,He as defineReadonly,Ln as defineWikilinkClickHandler,xr as docToMarkdown,Pr as markdownToDoc,ae as withPriority};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.15.2",
4
+ "version": "0.16.1",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -35,7 +35,8 @@
35
35
  "dedent": "^1.7.2",
36
36
  "diffable-html-snapshot": "^0.3.0",
37
37
  "tsdown": "^0.22.3",
38
- "vitest": "^4.1.9"
38
+ "vitest": "^4.1.9",
39
+ "@meowdown/vitest": "0.0.0"
39
40
  },
40
41
  "publishConfig": {
41
42
  "access": "public"